home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / assembler-tools / apathysource / miniwall / miniwall2.s < prev   
Encoding:
Text File  |  1980-02-03  |  23.3 KB  |  950 lines

  1. ;;; "                 Includes & Defines"
  2.            Machine   68020
  3.            Incdir    "!Includes:"
  4.            Include   "StdLibInc.i"
  5.            Include   "StdHardInc.i"
  6.  
  7.            Include   "Loader.i"
  8.            Include   "Support.i"
  9.            Include   "Demo.i"
  10.  
  11.            Incdir    "!Includes:os3.0/"
  12.            Include   "exec/memory.i"
  13.  
  14.            ;------------------
  15.  
  16.            xdef      MiniWall_Init
  17.            xdef      MiniWall_Show
  18.            xdef      MiniWall_Counter
  19.            xdef      MiniWall_Main
  20.            xdef      MiniWall_Remove
  21.  
  22.            xdef      MiniWall_Co
  23.            xdef      MiniWall_Co2
  24.            xdef      MiniWall_Co3
  25.  
  26. ;precalc stuff
  27. ;-------------
  28. UPP                Equ       128
  29. LOW                Equ       32
  30. DIFF               Equ       UPP-LOW
  31.  
  32. MUSIC              Equ       0
  33. ;;;
  34.  
  35. ***************************************
  36. *       Exempel/TestProgram...        *
  37. ***************************************
  38.  
  39.            Section   code,CODE
  40.  
  41.            IFND      noexample
  42. ;;; "                 Example"
  43. Start:             Jsr       _InitDemo
  44.            Tst.l     d0
  45.            Bne       Exit2
  46.  
  47. PlayMusic:
  48.            IFNE      MUSIC
  49.            Lea       Module,a0       ;Module
  50.            Sub.l     a1,a1           ;No separate samples
  51.            Lea       Samples,a2      ;Sample buffer
  52.            Jsr       _PlayMusic
  53.            Tst.l     d0
  54.            Bne       Exit
  55.            ENDC
  56.  
  57.            Bsr       MiniWall_Init
  58.            Tst.l     d0
  59.            Bne       StopMusic
  60.  
  61.            Bsr       MiniWall_Show
  62.  
  63. Main:              Bsr       _Sync
  64.            Bsr       MiniWall_Counter
  65.            Bsr       MiniWall_Main
  66.  
  67.            Btst      #6,$bfe001
  68.            Bne       Main
  69. .waitlop           Btst      #6,$bfe001
  70.            Beq       .waitlop
  71.  
  72.            Bsr       MiniWall_Remove
  73.  
  74. StopMusic:
  75.            IFNE      MUSIC
  76.            Bsr       _StopMusic
  77.            ENDC
  78.  
  79. Exit:              Bsr       _UninitDemo
  80. Exit2:             Moveq     #0,d0
  81.            Rts
  82. ;;;
  83.            ENDC
  84.  
  85.  
  86. ***************************************
  87. *   MiniWall-Subrutiner nedanför....  *
  88. ***************************************
  89.  
  90. MiniWall_Init:
  91. ;;; "                 Allocate and init copperlist"
  92. AllocCopper:       Move.l    #32*1024,d0                   ;Should be enough
  93.                                ;for copper list.
  94.            Move.l    #PowerWall_ID,d1
  95.            Bsr       _AllocChip
  96.            Move.l    d0,CopperPtr
  97.            Beq       InitError
  98.  
  99. InitCopper:        Move.l    d0,a0
  100.  
  101.            ;Basic Stuff...
  102.            ;--------------
  103.            Move.l    #$008e2571,(a0)+    ; DIWSTRT
  104.            Move.l    #$009039d1,(a0)+    ; DIWSTOP
  105.            Move.l    #$00920028,(a0)+    ; DDFSTRT
  106.            Move.l    #$009400d0,(a0)+    ; DDFSTOP
  107.            Move.l    #$0100c201,(a0)+    ; BPLCON0
  108.            Move.l    #$010200ff,(a0)+    ; BPLCON1
  109.            Move.l    #$01040000,(a0)+    ; BPLCON2
  110.            Move.l    #$01060020,(a0)+    ; BPLCON3 ($0020 = copborder)
  111.            Move.l    #$01fc0003,(a0)+    ; FETCHMODE
  112.  
  113.            Move.w    #$0108,(a0)+         ;Modulo
  114.            Move.w    #-88,(a0)+
  115.            Move.w    #$010a,(a0)+         ;Modulo
  116.            Move.w    #-88,(a0)+
  117.  
  118.            ;Sprite pointers
  119.            ;---------------
  120.            Move.l    a0,SprPtr
  121.            Move.l    #$01200000,(a0)+     ; SPRxPT
  122.            Move.l    #$01220000,(a0)+     ; SPRxPT
  123.            Move.l    #$01240000,(a0)+     ; SPRxPT
  124.            Move.l    #$01260000,(a0)+     ; SPRxPT
  125.            Move.l    #$01280000,(a0)+     ; SPRxPT
  126.            Move.l    #$012a0000,(a0)+     ; SPRxPT
  127.            Move.l    #$012c0000,(a0)+     ; SPRxPT
  128.            Move.l    #$012e0000,(a0)+     ; SPRxPT
  129.            Move.l    #$01300000,(a0)+     ; SPRxPT
  130.            Move.l    #$01320000,(a0)+     ; SPRxPT
  131.            Move.l    #$01340000,(a0)+     ; SPRxPT
  132.            Move.l    #$01360000,(a0)+     ; SPRxPT
  133.            Move.l    #$01380000,(a0)+     ; SPRxPT
  134.            Move.l    #$013a0000,(a0)+     ; SPRxPT
  135.            Move.l    #$013c0000,(a0)+     ; SPRxPT
  136.            Move.l    #$013e0000,(a0)+     ; SPRxPT
  137.  
  138.            Move.l    #$2301fffe,(a0)+     ;Wait line $2A
  139.  
  140.            ;Bitplane pointers
  141.            ;-----------------
  142.            Move.l    a0,BplPtr0
  143.            Move.l    #$00e00000,(a0)+     ; BPLxPTH
  144.            Move.l    #$00e20000,(a0)+     ; BPLxPTL
  145.            Move.l    #$00e40000,(a0)+     ; BPLxPTH
  146.            Move.l    #$00e60000,(a0)+     ; BPLxPTL
  147.            Move.l    #$00e80000,(a0)+     ; BPLxPTH
  148.            Move.l    #$00ea0000,(a0)+     ; BPLxPTL
  149.            Move.l    #$00ec0000,(a0)+     ; BPLxPTH
  150.            Move.l    #$00ee0000,(a0)+     ; BPLxPTL
  151.  
  152.            ;Copperlist for every line (1)
  153.            ;-----------------------------
  154. Lines1:            Move.l    a0,BplPtr
  155.            Moveq     #$24,d0
  156.            Move.w    #213+7-1,d1
  157. .lop1
  158.            Move.l    d0,d2
  159.            Lsl.l     #8,d2
  160.            Addq.l    #1,d2
  161.            Swap      d2
  162.            Move.w    #$fffe,d2
  163.            Move.l    d2,(a0)+
  164.  
  165.            Move.w    #$0108,(a0)+         ;Modulo
  166.            Move.w    #-88,(a0)+
  167.            Move.w    #$010a,(a0)+         ;Modulo
  168.            Move.w    #-88,(a0)+
  169.  
  170.            Move.w    #16-1,d2
  171.            Move.w    #$180,d3
  172.  
  173. .lop2              Move.w    d3,(a0)+
  174.            Move.w    #0,(a0)+
  175.            Addq.w    #2,d3
  176.            Dbra      d2,.lop2
  177.  
  178.            Addq.l    #1,d0
  179.            Dbra      d1,.lop1
  180.  
  181.            Move.l    #$ffdffffe,(a0)+     ;Copper wraps
  182.  
  183.            ;Copperlist for every line (2)
  184.            ;-----------------------------
  185. Lines2:            Move.l    a0,BplPtr2
  186.            Moveq     #$00,d0
  187.            Move.w    #44+7-1,d1
  188. .lop1
  189.            Move.l    d0,d2
  190.            Lsl.l     #8,d2
  191.            Addq.l    #1,d2
  192.            Swap      d2
  193.            Move.w    #$fffe,d2
  194.            Move.l    d2,(a0)+
  195.  
  196.            Move.w    #$0108,(a0)+         ;Modulo
  197.            Move.w    #-88,(a0)+
  198.            Move.w    #$010a,(a0)+         ;Modulo
  199.            Move.w    #-88,(a0)+
  200.  
  201.            Move.w    #16-1,d2
  202.            Move.w    #$180,d3
  203.  
  204. .lop2              Move.w    d3,(a0)+
  205.            Move.w    #0,(a0)+
  206.            Addq.w    #2,d3
  207.            Dbra      d2,.lop2
  208.  
  209.            Addq.l    #1,d0
  210.            Dbra      d1,.lop1
  211.  
  212.            Move.l    #$fffffffe,(a0)+
  213. ;;;
  214. ;;; "                 Allocate Basepicture memory"
  215. AllocBasePic:      Move.l    #88*270*4,d0
  216.  
  217.            Move.l    #PowerWall_ID,d1
  218.            Bsr       _AllocChip
  219.            Move.l    d0,BasePicPtr
  220.            Beq       InitError
  221. ;;;
  222. ;;; "                 Init Screen (Ptrs & Copperlists)"
  223. InitScreen:        Move.l    BplPtr0,a0
  224.            Move.l    BasePicPtr,d1
  225.            Moveq     #3,d2
  226.            Move.l    #88*270,d0
  227.            Bsr       _SetPtrs
  228.  
  229.            Move.l    SprPtr,a0
  230.            Move.l    #SpriteDummy,d1
  231.            Moveq     #7,d2
  232.            Moveq     #0,d0
  233.            Bsr       _SetPtrs
  234. ;;;
  235. ;;; "                 PreCalc"
  236.            Move.w    #270-1,Counter
  237. PreMain:
  238. PreCalc:           Move.l    #UPP*270,d5
  239.            Move.w    Counter,d1
  240.            Muls.w    #DIFF,d1
  241.            Sub.l     d1,d5
  242.  
  243.            ;-----------------------
  244.  
  245.            Lea       .table,a2
  246.            Lea       PreCalcTable,a1
  247.            Move.l    BasePicPtr,a4
  248.            Move.l    #639+64,d0
  249.            Moveq     #0,d7
  250.            Move.l    #320+32,d6
  251.  
  252. .lop               Move.l    d0,d1
  253.            Sub.l     d6,d1
  254.            Asl.l     #8,d1
  255.            Asl.l     #8,d1
  256.            Divs.l    d5,d1
  257.            Asr.l     #4,d1
  258.            Addx.l    d7,d1
  259.            Add.l     d6,d1
  260.  
  261.            Divu.w    #30,d1
  262.            Swap      d1
  263.  
  264.            ;----- Sätt pixel ------
  265.  
  266.            Move.l    a4,a0
  267.            Move.w    #269+1,d3
  268.            Sub.w     Counter,d3
  269.            Move.w    d3,d4
  270.            Move.w    d3,d2
  271.            Lsl.w     #6,d3
  272.            Lsl.w     #4,d4
  273.            Lsl.w     #3,d2
  274.            Add.w     d4,d3
  275.            Add.w     d2,d3
  276.  
  277.            Move.l    d0,d4
  278.            Lsr.l     #3,d4
  279.            Sub.l     d4,d3
  280.            Subq.l    #1,d3
  281.            Add.l     d3,a0
  282.  
  283.            Move.w    (a1,d1.w*2),d2
  284.  
  285.            ;-----------------------
  286.            Moveq     #1,d3
  287.            Move.l    d0,d4
  288.            Rol.b     d4,d3
  289.  
  290.            Move.l    #88*270,d4
  291.  
  292.            Move.l    (a2,d2.w*4),a3
  293.            Jmp       (a3)
  294.  
  295. .table             Dc.l      .0,.1,.2,.3,.4,.5,.6,.7,.8,.9
  296.            Dc.l      .10,.11,.12,.13,.14,.15
  297.  
  298. .12:               Add.l     d4,a0
  299.            Or.b      d3,(a0,d4)
  300.            Or.b      d3,(a0,d4*2)
  301.            Bra       .done
  302.  
  303. .13:               Or.b      d3,(a0)
  304.            Or.b      d3,(a0,d4*2)
  305.            Add.l     d4,a0
  306.            Or.b      d3,(a0,d4*2)
  307.            Bra       .done
  308.  
  309. .10:               Add.l     d4,a0
  310.            Or.b      d3,(a0)
  311.            Or.b      d3,(a0,d4*2)
  312.            Bra       .done
  313.  
  314. .5:                Or.b      d3,(a0)
  315. .4:                Or.b      d3,(a0,d4*2)
  316.            Bra       .done
  317.  
  318. .11:               Or.b      d3,(a0,d4)
  319. .9:                Or.b      d3,(a0)
  320. .8:                Add.l     d4,a0
  321.            Or.b      d3,(a0,d4*2)
  322.            Bra       .done
  323.  
  324. .14:               Add.l     d4,a0
  325.            Or.b      d3,(a0)
  326. .6:                Add.l     d4,a0
  327.            Or.b      d3,(a0)
  328. .2:                Or.b      d3,(a0,d4)
  329.            Bra       .done
  330.  
  331. .15:               Or.b      d3,(a0)
  332.            Add.l     d4,a0
  333. .7:                Or.b      d3,(a0)
  334.            Add.l     d4,a0
  335. .3:                Or.b      d3,(a0,d4)
  336. .1:                Or.b      d3,(a0)
  337. .0:
  338. .done
  339.            Dbra      d0,.lop
  340.  
  341.            Subq.w    #1,Counter
  342.            Bge       PreMain
  343.  
  344. ;;;
  345. ;;; "                 Rts"
  346.            Moveq     #0,d0
  347.            Rts
  348. InitError:
  349.            Move.l    #PowerWall_ID,d0
  350.            Bsr       _FreeMany
  351.            Moveq     #1,d0
  352.            Rts
  353. ;;;
  354.  
  355. MiniWall_Show:
  356.            Move.l    CopperPtr,a0
  357.            Bsr       _InstallCopper
  358.            Rts
  359.  
  360. MiniWall_Counter:
  361. ;;; "                 Counters"
  362. SyncIt:            Lea       Table1,a0
  363.            Move.l    a0,TablePtr1
  364.            Lea       Table2,a0
  365.            Move.l    a0,TablePtr2
  366.            Lea       Table3,a0
  367.            Move.l    a0,TablePtr3
  368.            Lea       Table4,a0
  369.            Move.l    a0,TablePtr4
  370.  
  371.            ;Add.l     #4,MiniWall_Co
  372.            ;And.l     #1023,MiniWall_Co
  373.  
  374.            ;Add.l     #5,MiniWall_Co2
  375.            ;And.l     #1023,MiniWall_Co2
  376.  
  377.            ;Add.l     #3,MiniWall_Co3
  378.            ;And.l     #1023,MiniWall_Co3
  379. ;;;
  380.            Rts
  381.  
  382. MiniWall_Main:
  383. ;;; "                 Ptr 1"
  384.            Clr.l     Vert
  385.            Lea       _Sin1024,a0
  386.            Move.l    BplPtr,a3
  387.            Move.l    TablePtr1,a2
  388.            Move.l    MiniWall_Co,d0
  389.            Move.l    #212+7,d1
  390.  
  391.            ;--------------------
  392.  
  393.            Move.l    d1,d3
  394.            Sub.l     d0,d3
  395.            Add.l     MiniWall_Co2,d3
  396.            Asl.l     #2,d3
  397.            And.l     #1023,d3
  398.            Move.w    (a0,d3.l*2),d2
  399.            Ext.l     d2
  400.            Add.l     d0,d2
  401.            Add.l     MiniWall_Co2,d2
  402.            ;Add.l     d1,d2
  403.            Add.l     d1,d2
  404.            Add.l     MiniWall_Co3,d2
  405.            And.l     #1023,d2
  406.  
  407.            Move.w    (a0,d2.l*2),d7
  408.            Asr.w     #1,d7
  409.            Add.w     #128,d7
  410.            Move.w    d7,Pos
  411.            Muls.w    #80+8,d7
  412.  
  413.            Move.l    BplPtr0,a0
  414.            Move.l    BasePicPtr,d1
  415.            Add.l     d7,d1
  416.            Moveq     #3,d2
  417.            Move.l    #88*270,d0
  418.            Bsr       _SetPtrs
  419.  
  420.            Lea       _Sin1024,a0
  421.            Move.l    BplPtr,a3
  422.            Lea       Table1,a2
  423.            Move.l    MiniWall_Co,d0
  424.            Move.l    #212+7,d1
  425.  
  426.            ;----------------
  427. PtrLoop:
  428.            Move.l    d1,d3
  429.            Sub.l     d0,d3
  430.            Add.l     MiniWall_Co2,d3
  431.            Asl.l     #2,d3
  432.            And.l     #1023,d3
  433.            Move.w    (a0,d3.l*2),d2
  434.            Ext.l     d2
  435.            Add.l     d0,d2
  436.            Add.l     MiniWall_Co2,d2
  437.            ;Add.l     d1,d2
  438.            Add.l     d1,d2
  439.            Add.l     MiniWall_Co3,d2
  440.            And.l     #1023,d2
  441.  
  442.            Move.w    (a0,d2.l*2),d7
  443.            Asr.w     #1,d7
  444.            Add.w     #128,d7
  445.            Move.w    d7,d5
  446.            Move.w    #255+100,d2
  447.            Sub.w     d7,d2
  448.            Lsr.w     #4,d2
  449.            Add.w     d2,Vert
  450.            And.w     #255,Vert
  451.  
  452.            ;------------------------
  453.  
  454.            Move.w    Pos,d2
  455.            Move.w    d7,Pos              ;Store this position
  456.            Sub.w     d2,d7
  457.  
  458.            Muls.w    #80+8,d7
  459.            Sub.l     #88+8,d7
  460.  
  461.            Move.w    d7,6(a3)            ;Change modulos
  462.            Move.w    d7,10(a3)           ;Change modulos
  463.  
  464.            ;------------------
  465.  
  466.            Lsr.w     #4,d5
  467.            Lsl.w     #1,d5
  468.  
  469.            Move.w    Vert,d2
  470.            Move.l    TablePtr1,a2
  471.            Cmp.w     #192,d2
  472.            Bgt       .skip
  473.            Move.l    TablePtr2,a2
  474.            Cmp.w     #128,d2
  475.            Bgt       .skip
  476.            Move.l    TablePtr3,a2
  477.            Cmp.w     #64,d2
  478.            Bgt       .skip
  479.            Move.l    TablePtr4,a2
  480. .skip
  481.            Move.w    32*0(a2,d5.w),14(a3)
  482.            Move.w    32*1(a2,d5.w),18(a3)
  483.            Move.w    32*2(a2,d5.w),22(a3)
  484.            Move.w    32*3(a2,d5.w),26(a3)
  485.            Move.w    32*4(a2,d5.w),30(a3)
  486.            Move.w    32*5(a2,d5.w),34(a3)
  487.            Move.w    32*6(a2,d5.w),38(a3)
  488.            Move.w    32*7(a2,d5.w),42(a3)
  489.  
  490.            Move.w    32*8(a2,d5.w),46(a3)
  491.            Move.w    32*9(a2,d5.w),50(a3)
  492.            Move.w    32*10(a2,d5.w),54(a3)
  493.            Move.w    32*11(a2,d5.w),58(a3)
  494.            Move.w    32*12(a2,d5.w),62(a3)
  495.            Move.w    32*13(a2,d5.w),66(a3)
  496.            Move.w    32*14(a2,d5.w),70(a3)
  497.            Move.w    32*15(a2,d5.w),74(a3)
  498.  
  499.            Lea       19*4(a3),a3
  500.  
  501.            Dbra      d1,PtrLoop
  502. ;;;
  503. ;;; "                 Ptr 2"
  504.            Move.l    BplPtr2,a3
  505.            Move.l    #43+7,d1
  506. PtrLoop2:
  507.            Move.l    d1,d3
  508.            Sub.l     d0,d3
  509.            Add.l     MiniWall_Co2,d3
  510.            Sub.l     #44+7,d3
  511.            Asl.l     #2,d3
  512.            And.l     #1023,d3
  513.            Move.w    (a0,d3.l*2),d2
  514.            Ext.l     d2
  515.            Add.l     d0,d2
  516.            Add.l     MiniWall_Co2,d2
  517.            Add.l     d1,d2
  518.            ;Add.l     d1,d2
  519.            Sub.l     #44*1+7,d2
  520.            Add.l     MiniWall_Co3,d2
  521.            And.l     #1023,d2
  522.  
  523.            Move.w    (a0,d2.l*2),d7
  524.            Asr.w     #1,d7
  525.            Add.w     #128,d7
  526.            Move.w    d7,d5
  527.            Move.w    #255+100,d2
  528.            Sub.w     d7,d2
  529.            Lsr.w     #4,d2
  530.            Add.w     d2,Vert
  531.            And.w     #255,Vert
  532.  
  533.            ;------------------------
  534.  
  535.            Move.w    Pos,d2
  536.            Move.w    d7,Pos              ;Store this position
  537.            Sub.w     d2,d7
  538.  
  539.            Muls.w    #80+8,d7
  540.            Sub.l     #88+8,d7
  541.  
  542.            Move.w    d7,6(a3)            ;Change modulos
  543.            Move.w    d7,10(a3)           ;Change modulos
  544.  
  545.            ;------------------
  546.  
  547.            Lsr.w     #4,d5
  548.            Lsl.w     #1,d5
  549.  
  550.            Move.w    Vert,d2
  551.            Move.l    TablePtr1,a2
  552.            Cmp.w     #192,d2
  553.            Bgt       .skip
  554.            Move.l    TablePtr2,a2
  555.            Cmp.w     #128,d2
  556.            Bgt       .skip
  557.            Move.l    TablePtr3,a2
  558.            Cmp.w     #64,d2
  559.            Bgt       .skip
  560.            Move.l    TablePtr4,a2
  561. .skip
  562.            Move.w    32*0(a2,d5.w),14(a3)
  563.            Move.w    32*1(a2,d5.w),18(a3)
  564.            Move.w    32*2(a2,d5.w),22(a3)
  565.            Move.w    32*3(a2,d5.w),26(a3)
  566.            Move.w    32*4(a2,d5.w),30(a3)
  567.            Move.w    32*5(a2,d5.w),34(a3)
  568.            Move.w    32*6(a2,d5.w),38(a3)
  569.            Move.w    32*7(a2,d5.w),42(a3)
  570.  
  571.            Move.w    32*8(a2,d5.w),46(a3)
  572.            Move.w    32*9(a2,d5.w),50(a3)
  573.            Move.w    32*10(a2,d5.w),54(a3)
  574.            Move.w    32*11(a2,d5.w),58(a3)
  575.            Move.w    32*12(a2,d5.w),62(a3)
  576.            Move.w    32*13(a2,d5.w),66(a3)
  577.            Move.w    32*14(a2,d5.w),70(a3)
  578.            Move.w    32*15(a2,d5.w),74(a3)
  579.  
  580.            Lea       19*4(a3),a3
  581.  
  582.            Dbra      d1,PtrLoop2
  583. ;;;
  584.            Rts
  585.  
  586. MiniWall_Remove:
  587. ;;; "                 Free Memory"
  588. FreeMemory:        Move.l    #PowerWall_ID,d0
  589.            Bsr       _FreeMany
  590. ;;;
  591.            Rts
  592.  
  593.  
  594. ***************************************
  595. *          MiniWall data...          *
  596. ***************************************
  597.  
  598. ;;; "Variables & Data"
  599. E8:                Dc.l      0
  600.  
  601. MiniWall_Co:       Dc.l      0
  602. MiniWall_Co2:      Dc.l      0
  603. MiniWall_Co3:      Dc.l      0
  604. Vert:              Dc.l      0
  605.  
  606. BasePicPtr:        Dc.l      0
  607. CopperPtr:         Dc.l      0
  608. SprPtr:            Dc.l      0
  609. BplPtr0:           Dc.l      0
  610. BplPtr:            Dc.l      0
  611. BplPtr2:           Dc.l      0
  612.  
  613. TablePtr1:         Dc.l      0
  614. TablePtr2:         Dc.l      0
  615. TablePtr3:         Dc.l      0
  616. TablePtr4:         Dc.l      0
  617.  
  618. Event:             Dc.l      0
  619. Counter:           Dc.w      0
  620. Pos:               Dc.w      0
  621.  
  622. PreCalcTable:      Dc.w      0,1,2,3,4,5,6,7,8,9,10,11,12,13,14
  623.            Dc.w      15,14,13,12,11,10,9,8,7,6,5,4,3,2,1
  624. ;;;
  625. ;;; "Table 1-4"
  626. Table1:            Dc.w      $00f,$11f,$22f,$33f
  627.            Dc.w      $44f,$55f,$66f,$77f
  628.            Dc.w      $88f,$99f,$aaf,$bbf
  629.            Dc.w      $ccf,$ddf,$eef,$fff
  630.  
  631.            Dc.w      $000,$100,$211,$322
  632.            Dc.w      $433,$544,$655,$766
  633.            Dc.w      $877,$988,$a99,$baa
  634.            Dc.w      $cbb,$dcc,$edd,$fee
  635.  
  636.            Dc.w      $000,$100,$200,$311
  637.            Dc.w      $422,$533,$644,$755
  638.            Dc.w      $866,$977,$a88,$b99
  639.            Dc.w      $caa,$dbb,$ecc,$fdd
  640.  
  641.            Dc.w      $000,$100,$200,$300
  642.            Dc.w      $411,$522,$633,$744
  643.            Dc.w      $855,$966,$a77,$b88
  644.            Dc.w      $c99,$daa,$ebb,$fcc
  645.  
  646.            Dc.w      $000,$100,$200,$300
  647.            Dc.w      $400,$511,$622,$733
  648.            Dc.w      $844,$955,$a66,$b77
  649.            Dc.w      $c88,$d99,$eaa,$fbb
  650.  
  651.            Dc.w      $000,$100,$200,$300
  652.            Dc.w      $400,$500,$611,$722
  653.            Dc.w      $833,$944,$a55,$b66
  654.            Dc.w      $c77,$d88,$e99,$faa
  655.  
  656.            Dc.w      $000,$100,$200,$300
  657.            Dc.w      $400,$500,$600,$711
  658.            Dc.w      $822,$933,$a44,$b55
  659.            Dc.w      $c66,$d77,$e88,$f99
  660.  
  661.            Dc.w      $000,$100,$200,$300
  662.            Dc.w      $400,$500,$600,$700
  663.            Dc.w      $811,$922,$a33,$b44
  664.            Dc.w      $c55,$d66,$e77,$f88
  665.  
  666.  
  667.            Dc.w      $000,$100,$200,$300
  668.            Dc.w      $400,$500,$600,$700
  669.            Dc.w      $800,$911,$a22,$b33
  670.            Dc.w      $c44,$d55,$e66,$f77
  671.  
  672.            Dc.w      $000,$100,$200,$300
  673.            Dc.w      $400,$500,$600,$700
  674.            Dc.w      $800,$900,$a11,$b22
  675.            Dc.w      $c33,$d44,$e55,$f66
  676.  
  677.            Dc.w      $000,$100,$200,$300
  678.            Dc.w      $400,$500,$600,$700
  679.            Dc.w      $800,$900,$a00,$b11
  680.            Dc.w      $c22,$d33,$e44,$f55
  681.  
  682.            Dc.w      $000,$100,$200,$300
  683.            Dc.w      $400,$500,$600,$700
  684.            Dc.w      $800,$900,$a00,$b00
  685.            Dc.w      $c11,$d22,$e33,$f44
  686.  
  687.            Dc.w      $000,$100,$200,$300
  688.            Dc.w      $400,$500,$600,$700
  689.            Dc.w      $800,$900,$a00,$b00
  690.            Dc.w      $c00,$d11,$e22,$f33
  691.  
  692.            Dc.w      $000,$100,$200,$300
  693.            Dc.w      $400,$500,$600,$700
  694.            Dc.w      $800,$900,$a00,$b00
  695.            Dc.w      $c00,$d00,$e11,$f22
  696.  
  697.            Dc.w      $000,$100,$200,$300
  698.            Dc.w      $400,$500,$600,$700
  699.            Dc.w      $800,$900,$a00,$b00
  700.            Dc.w      $c00,$d00,$e00,$f11
  701.  
  702.            Dc.w      $006,$106,$205,$305
  703.            Dc.w      $404,$504,$603,$703
  704.            Dc.w      $802,$902,$a01,$b01
  705.            Dc.w      $c00,$d00,$e00,$f00
  706.  
  707.  
  708. Table2:            Dc.w      $00f,$10f,$20f,$30f
  709.            Dc.w      $40f,$50f,$60f,$70f
  710.            Dc.w      $80f,$91f,$a2f,$b3f
  711.            Dc.w      $c4f,$d5f,$e6f,$f7f
  712.  
  713.            Dc.w      $000,$100,$200,$300
  714.            Dc.w      $400,$500,$600,$700
  715.            Dc.w      $800,$900,$a11,$b22
  716.            Dc.w      $c33,$d44,$e55,$f66
  717.  
  718.            Dc.w      $000,$100,$200,$300
  719.            Dc.w      $400,$500,$600,$700
  720.            Dc.w      $800,$900,$a00,$b11
  721.            Dc.w      $c22,$d33,$e44,$f55
  722.  
  723.            Dc.w      $000,$100,$200,$300
  724.            Dc.w      $400,$500,$600,$700
  725.            Dc.w      $800,$900,$a00,$b00
  726.            Dc.w      $c11,$d22,$e33,$f44
  727.  
  728.            Dc.w      $000,$100,$200,$300
  729.            Dc.w      $400,$500,$600,$700
  730.            Dc.w      $800,$900,$a00,$b00
  731.            Dc.w      $c00,$d11,$e22,$f33
  732.  
  733.            Dc.w      $000,$100,$200,$300
  734.            Dc.w      $400,$500,$600,$700
  735.            Dc.w      $800,$900,$a00,$b00
  736.            Dc.w      $c00,$d00,$e11,$f22
  737.  
  738.            Dc.w      $000,$100,$200,$300
  739.            Dc.w      $400,$500,$600,$700
  740.            Dc.w      $800,$900,$a00,$b00
  741.            Dc.w      $c00,$d00,$e00,$f11
  742.  
  743.            Dc.w      $006,$106,$205,$305
  744.            Dc.w      $404,$504,$603,$703
  745.            Dc.w      $802,$902,$a01,$b01
  746.            Dc.w      $c00,$d00,$e00,$f00
  747.  
  748.            Dc.w      $00f,$11f,$22f,$33f
  749.            Dc.w      $44f,$55f,$66f,$77f
  750.            Dc.w      $88f,$99f,$aaf,$bbf
  751.            Dc.w      $ccf,$ddf,$eef,$fff
  752.  
  753.            Dc.w      $000,$100,$211,$322
  754.            Dc.w      $433,$544,$655,$766
  755.            Dc.w      $877,$988,$a99,$baa
  756.            Dc.w      $cbb,$dcc,$edd,$fee
  757.  
  758.            Dc.w      $000,$100,$200,$311
  759.            Dc.w      $422,$533,$644,$755
  760.            Dc.w      $866,$977,$a88,$b99
  761.            Dc.w      $caa,$dbb,$ecc,$fdd
  762.  
  763.            Dc.w      $000,$100,$200,$300
  764.            Dc.w      $411,$522,$633,$744
  765.            Dc.w      $855,$966,$a77,$b88
  766.            Dc.w      $c99,$daa,$ebb,$fcc
  767.  
  768.            Dc.w      $000,$100,$200,$300
  769.            Dc.w      $400,$511,$622,$733
  770.            Dc.w      $844,$955,$a66,$b77
  771.            Dc.w      $c88,$d99,$eaa,$fbb
  772.  
  773.            Dc.w      $000,$100,$200,$300
  774.            Dc.w      $400,$500,$611,$722
  775.            Dc.w      $833,$944,$a55,$b66
  776.            Dc.w      $c77,$d88,$e99,$faa
  777.  
  778.            Dc.w      $000,$100,$200,$300
  779.            Dc.w      $400,$500,$600,$711
  780.            Dc.w      $822,$933,$a44,$b55
  781.            Dc.w      $c66,$d77,$e88,$f99
  782.  
  783.            Dc.w      $000,$100,$200,$300
  784.            Dc.w      $400,$500,$600,$700
  785.            Dc.w      $811,$922,$a33,$b44
  786.            Dc.w      $c55,$d66,$e77,$f88
  787.  
  788.  
  789. Table3:            Dc.w      $00f,$10f,$20f,$30f
  790.            Dc.w      $40f,$50f,$61f,$72f
  791.            Dc.w      $83f,$94f,$a5f,$b6f
  792.            Dc.w      $c7f,$d8f,$e9f,$faf
  793.  
  794.            Dc.w      $000,$100,$200,$300
  795.            Dc.w      $400,$500,$600,$711
  796.            Dc.w      $822,$933,$a44,$b55
  797.            Dc.w      $c66,$d77,$e88,$f99
  798.  
  799.            Dc.w      $000,$100,$200,$300
  800.            Dc.w      $400,$500,$600,$700
  801.            Dc.w      $811,$922,$a33,$b44
  802.            Dc.w      $c55,$d66,$e77,$f88
  803.  
  804.            Dc.w      $000,$100,$200,$300
  805.            Dc.w      $400,$500,$600,$700
  806.            Dc.w      $800,$911,$a22,$b33
  807.            Dc.w      $c44,$d55,$e66,$f77
  808.  
  809.            Dc.w      $000,$100,$200,$300
  810.            Dc.w      $400,$500,$600,$700
  811.            Dc.w      $800,$900,$a11,$b22
  812.            Dc.w      $c33,$d44,$e55,$f66
  813.  
  814.            Dc.w      $000,$100,$200,$300
  815.            Dc.w      $400,$500,$600,$700
  816.            Dc.w      $800,$900,$a00,$b11
  817.            Dc.w      $c22,$d33,$e44,$f55
  818.  
  819.            Dc.w      $000,$100,$200,$300
  820.            Dc.w      $400,$500,$600,$700
  821.            Dc.w      $800,$900,$a00,$b00
  822.            Dc.w      $c11,$d22,$e33,$f44
  823.  
  824.            Dc.w      $000,$100,$200,$300
  825.            Dc.w      $400,$500,$600,$700
  826.            Dc.w      $800,$900,$a00,$b00
  827.            Dc.w      $c00,$d11,$e22,$f33
  828.  
  829.            Dc.w      $000,$100,$200,$300
  830.            Dc.w      $400,$500,$600,$700
  831.            Dc.w      $800,$900,$a00,$b00
  832.            Dc.w      $c00,$d00,$e11,$f22
  833.  
  834.            Dc.w      $000,$100,$200,$300
  835.            Dc.w      $400,$500,$600,$700
  836.            Dc.w      $800,$900,$a00,$b00
  837.            Dc.w      $c00,$d00,$e00,$f11
  838.  
  839.            Dc.w      $006,$106,$205,$305
  840.            Dc.w      $404,$504,$603,$703
  841.            Dc.w      $802,$902,$a01,$b01
  842.            Dc.w      $c00,$d00,$e00,$f00
  843.  
  844.            Dc.w      $00f,$11f,$22f,$33f
  845.            Dc.w      $44f,$55f,$66f,$77f
  846.            Dc.w      $88f,$99f,$aaf,$bbf
  847.            Dc.w      $ccf,$ddf,$eef,$fff
  848.  
  849.            Dc.w      $000,$100,$211,$322
  850.            Dc.w      $433,$544,$655,$766
  851.            Dc.w      $877,$988,$a99,$baa
  852.            Dc.w      $cbb,$dcc,$edd,$fee
  853.  
  854.            Dc.w      $000,$100,$200,$311
  855.            Dc.w      $422,$533,$644,$755
  856.            Dc.w      $866,$977,$a88,$b99
  857.            Dc.w      $caa,$dbb,$ecc,$fdd
  858.  
  859.            Dc.w      $000,$100,$200,$300
  860.            Dc.w      $411,$522,$633,$744
  861.            Dc.w      $855,$966,$a77,$b88
  862.            Dc.w      $c99,$daa,$ebb,$fcc
  863.  
  864.            Dc.w      $000,$100,$200,$300
  865.            Dc.w      $400,$511,$622,$733
  866.            Dc.w      $844,$955,$a66,$b77
  867.            Dc.w      $c88,$d99,$eaa,$fbb
  868.  
  869.  
  870. Table4:            Dc.w      $00f,$10f,$20f,$30f
  871.            Dc.w      $40f,$50f,$60f,$70f
  872.            Dc.w      $80f,$90f,$a0f,$b0f
  873.            Dc.w      $c0f,$d1f,$e2f,$f3f
  874.  
  875.            Dc.w      $000,$100,$200,$300
  876.            Dc.w      $400,$500,$600,$700
  877.            Dc.w      $800,$900,$a00,$b00
  878.            Dc.w      $c00,$d00,$e11,$f22
  879.  
  880.            Dc.w      $000,$100,$200,$300
  881.            Dc.w      $400,$500,$600,$700
  882.            Dc.w      $800,$900,$a00,$b00
  883.            Dc.w      $c00,$d00,$e00,$f11
  884.  
  885.            Dc.w      $000,$100,$200,$300
  886.            Dc.w      $400,$500,$611,$722
  887.            Dc.w      $833,$944,$a55,$b66
  888.            Dc.w      $c77,$d88,$e99,$faa
  889.  
  890.            Dc.w      $000,$100,$200,$300
  891.            Dc.w      $400,$500,$600,$711
  892.            Dc.w      $822,$933,$a44,$b55
  893.            Dc.w      $c66,$d77,$e88,$f99
  894.  
  895.            Dc.w      $000,$100,$200,$300
  896.            Dc.w      $400,$500,$600,$700
  897.            Dc.w      $811,$922,$a33,$b44
  898.            Dc.w      $c55,$d66,$e77,$f88
  899.  
  900.            Dc.w      $000,$100,$200,$300
  901.            Dc.w      $400,$500,$600,$700
  902.            Dc.w      $800,$911,$a22,$b33
  903.            Dc.w      $c44,$d55,$e66,$f77
  904.  
  905.            Dc.w      $000,$100,$200,$300
  906.            Dc.w      $400,$500,$600,$700
  907.            Dc.w      $800,$900,$a11,$b22
  908.            Dc.w      $c33,$d44,$e55,$f66
  909.  
  910.            Dc.w      $000,$100,$200,$300
  911.            Dc.w      $400,$500,$600,$700
  912.            Dc.w      $800,$900,$a00,$b11
  913.            Dc.w      $c22,$d33,$e44,$f55
  914.  
  915.            Dc.w      $000,$100,$200,$300
  916.            Dc.w      $400,$500,$600,$700
  917.            Dc.w      $800,$900,$a00,$b00
  918.            Dc.w      $c11,$d22,$e33,$f44
  919.  
  920.            Dc.w      $006,$106,$205,$305
  921.            Dc.w      $404,$504,$603,$703
  922.            Dc.w      $802,$902,$a01,$b01
  923.            Dc.w      $c00,$d00,$e00,$f00
  924.  
  925.            Dc.w      $00f,$11f,$22f,$33f
  926.            Dc.w      $44f,$55f,$66f,$77f
  927.            Dc.w      $88f,$99f,$aaf,$bbf
  928.            Dc.w      $ccf,$ddf,$eef,$fff
  929.  
  930.            Dc.w      $000,$100,$211,$322
  931.            Dc.w      $433,$544,$655,$766
  932.            Dc.w      $877,$988,$a99,$baa
  933.            Dc.w      $cbb,$dcc,$edd,$fee
  934.  
  935.            Dc.w      $000,$100,$200,$311
  936.            Dc.w      $422,$533,$644,$755
  937.            Dc.w      $866,$977,$a88,$b99
  938.            Dc.w      $caa,$dbb,$ecc,$fdd
  939.  
  940.            Dc.w      $000,$100,$200,$300
  941.            Dc.w      $411,$522,$633,$744
  942.            Dc.w      $855,$966,$a77,$b88
  943.            Dc.w      $c99,$daa,$ebb,$fcc
  944.  
  945.            Dc.w      $000,$100,$200,$300
  946.            Dc.w      $400,$511,$622,$733
  947.            Dc.w      $844,$955,$a66,$b77
  948.            Dc.w      $c88,$d99,$eaa,$fbb
  949. ;;;
  950.